#include "stdafx.h"

#include "thermal_reservoir.h"

namespace blue_sky{
	
	/**
   * \brief  'default' reservoir ctor
   * \param  param additional ctor params
   * */
  template <class strategy_t>
  thermal_reservoir <strategy_t>::thermal_reservoir (bs_type_ctor_param param):
  base_t(param)
  {
    data_saver_.reset (new thermal_data_saver_t);
  }

  	/**
	* \brief  copy-ctor for calc_model
	* \param  src calc_model instance
	* */
	template <class strategy_t>
	thermal_reservoir<strategy_t>::thermal_reservoir(const blue_sky::thermal_reservoir<strategy_t> & src)
		: bs_refcounter(src), reservoir<strategy_t>(src)
	{
		if (&src != this)
			*this = src;
	}

  BLUE_SKY_TYPE_STD_CREATE_T_DEF (thermal_reservoir, (class))
  BLUE_SKY_TYPE_STD_COPY_T_DEF (thermal_reservoir, (class))

  BLUE_SKY_TYPE_IMPL_T_EXT (1, (thermal_reservoir <base_strategy_fi>), 1, (reservoir), "thermal_reservior_seq_fi", "", "", false)
  BLUE_SKY_TYPE_IMPL_T_EXT (1, (thermal_reservoir <base_strategy_di>), 1, (reservoir), "thermal_reservior_seq_di", "", "", false)
  BLUE_SKY_TYPE_IMPL_T_EXT (1, (thermal_reservoir <base_strategy_mixi>), 1, (reservoir), "thermal_reservior_seq_mixi", "", "", false)

}